package com.dev.springBootDemo.reflection;

/**
 * @author zhumq
 * @date 2024/7/1 20:44
 */
// 测试类初始化
public class testReflection05 {
    static {
        System.out.println("main类被加载");
    }
    public static void main(String[] args) throws ClassNotFoundException {
        // 1.主动引用
        Son son = new Son();
        // 2.反射主动引用
        Class clazz = Class.forName("com.dev.springBootDemo.reflection.Son");

        // 3.不会产生类的引用 当通过子类引用父类的静态变量，不会导致子类初始化
        System.out.println(Son.fatherNum);

        // 4.不会产生类的引用 通过数组定义类引用，不会触发此类的初始化
        Son[] arr = new Son[5];
        // 3.被动引用
        System.out.println(Son.sonNum1);
        System.out.println(Son.sonNum2);
    }
}

class Father {
    static int fatherNum = 100;
    static {
        System.out.println("父类被加载");
    }
}
class Son extends Father {
    static {
        System.out.println("子类被加载");
    }
    static int sonNum1 = 200;
    static final int sonNum2 = 300;
}
